A wide variety of memory devices can be used to maintain and store data and instructions for various computers and similar systems. In particular, flash memory is a type of electronic memory media that can be rewritten and that can retain content without consumption of power. Unlike dynamic random access memory (DRAM) devices and static random memory (SRAM) devices in which a single byte can be erased, flash memory devices are typically erased in fixed multi-bit blocks or sectors. Flash memory technology can include NOR flash memory and/or NAND flash memory, for example. NOR flash memory evolved from electrically erasable read only memory (EEPROM) chip technology, in which, unlike flash memory, a single byte can be erased; and NAND flash memory evolved from DRAM technology. Flash memory devices typically are less expensive and denser as compared to many other memory devices, meaning that flash memory devices can store more data per unit area.
Flash memory has become popular, at least in part, because it combines the advantages of the high density and low cost of EPROM with the electrical erasability of EEPROM. Flash memory is non-volatile; it can be rewritten and can hold its content without power. It can be used in many portable electronic products, such as cell phones, portable computers, voice recorders, thumbnail drives and the like, as well as in many larger electronic systems, such as cars, planes, industrial control systems, etc. The fact that flash memory can be rewritten, as well as its retention of data without a power source, small size, and light weight, have all combined to make flash memory devices useful and popular means for transporting and maintaining data.
When a write operation is successfully completed to a block-addressable non-volatile memory, such as a NAND flash memory device or the like, a signal indicating the result of the write operation is asserted or the status may be otherwise read from the non-volatile memory device. When the information asserts that the operation was successful the next step for the system is to process the next pending operation or for the system to go idle if no further processing is required. However, when the information asserts that the write operation was unsuccessful the next step in a robust system is to try to write the data to another location provided that the original data to be written is still available to the system. The process of attempting to write the data to another location after an unsuccessful write operation is commonly referred to as a retry. In conventional systems, a retry is accomplished in the same manner of the original write operation, the data associated with write is transferred from a system buffer to a buffer within the non-volatile device.
Thus, in order to have the original data available, i.e. stored in a system buffer, after an unsuccessful write operation requires a dedicated amount of buffering in the system design. However, there is a cost associated with the memory device used by the system to provide the buffering. In addition to the cost, by accounting for a memory device to support the dedicated system buffer, more space is utilized at the board level, which impedes the goal of trying to minimize board space consumption. Board design is especially of concern when the system is a compact portable device, such as a cellular telephone, personal data assistant (PDA) or the like.
In addition to the cost related to the dedicated buffer device and the board design considerations there is a latency attributed to the current retry process associated with re-transferring the original data from the system buffer to the buffer in the non-volatile device.
Thus, a need exists to develop a novel approach for retrying non-volatile write operations. The desired approach should provide for a retry method without relying on an external system buffer. As such, by eliminating the need for the external system buffer, overall cost of the system is minimized, space minimization in terms of board design can be addressed and latencies attributed to transferring the data from the external system buffer to the non-volatile device buffer can be eliminated.